package com.itg.vms.dao;

import com.itg.vms.entity.User;

import java.util.List;

/**
 * 用户表数据层
 * @author itg
 * @create 2023年03月04日 11:40:45
 */
public interface UserDao {

    /**
     * 插入用户
     * @param user 要插入的用户实体
     * @return 是否添加成功
     */
    boolean insertUser(User user);

    /**
     * 通过用户名和密码查询用户（登录）
     * @param username 用户名
     * @param password 密码
     * @return 用户实体
     */
    User selectUserByUsernameAndPassword(String username,String password);

    /**
     * 添加用户信息
     * @param user
     * @return
     */
    boolean addUser(User user);

    /**
     * 删除用户
     * @param user_id 要删除的用户id
     * @param updateBy 删除操作执行者
     * @return
     */
    int deleteUserById(String user_id,String updateBy);

    /**
     * 分页查询用户
     * @param currentPage 当前页面
     * @param pageSize 页面显示的数据条数
     * @return 用户列表
     */
    List<User> selectAllUser(Integer currentPage,Integer pageSize);

    /**
     * 得到user的总记录数
     * @return user表的总记录数
     */
    Long getAllUserSize();


    /**
     * 登录者自主修改个人资料
     * @param user
     * @return
     */
    boolean updateAdminAndUserInfo(User user);

    /**
     * 修改用户相关信息
     * @param user_name
     * @param nick_name
     * @param user_type
     * @param email
     * @param phonenumber
     * @param gender
     * @param status
     * @param username
     * @return
     */
    boolean UpdateUserById( String user_name, String nick_name, String user_type, String email, String phonenumber, String gender, String status,String username);

    /**
     * 修改密码
     * @param new_password
     * @param username
     * @return
     */
    boolean updatePassword(String new_password,String username);

    /**
     * 注册用户
     * @param user
     * @return
     */
    boolean registerUser(User user);

    /**
     * 通过名字查询用户
     * @param user_id
     * @param user_name
     * @param nick_name
     * @param phonenumber
     * @return
     */
    List<User> selectUserByName(String user_id, String user_name, String nick_name, String phonenumber);

    /**
     * 获取编辑框中的数据
     * @param user_id
     * @return
     */
    User GeteditUserById(String user_id);

    /**
     * 根据用户id修改用户状态
     * @param userId 用户id
     * @param status 用户状态
     * @return 影响的行数
     */
    int updateUserStatus(String userId,String status);

    /**
     * 通过用户名查询用户
     * @param username 用户名
     * @return 查询到的用户实体
     */
    User selectUserByUsername(String username);
}
